home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / pibsigs.zip / TINV.PAS < prev   
Pascal/Delphi Source File  |  1993-01-04  |  3KB  |  61 lines

  1. (*--------------------------------------------------------------------------*)
  2. (*                 Tinv -- Inverse Central t Distribution                   *)
  3. (*--------------------------------------------------------------------------*)
  4.  
  5. FUNCTION tinv( Alpha, Df: REAL ) : REAL;
  6.  
  7. (*--------------------------------------------------------------------------*)
  8. (*                                                                          *)
  9. (*       Function:  tinv                                                    *)
  10. (*                                                                          *)
  11. (*       Purpose:   Calculates central inverse t                            *)
  12. (*                                                                          *)
  13. (*       Calling Sequence:                                                  *)
  14. (*                                                                          *)
  15. (*            tval   := tinv( Alpha, Df : REAL ) : REAL;                    *)
  16. (*                                                                          *)
  17. (*                 Alpha  --- Probability value                             *)
  18. (*                 Df     --- Degrees of freedom                            *)
  19. (*                                                                          *)
  20. (*                 tval   --- returned t-value corresponding to 'Alpha'.    *)
  21. (*                                                                          *)
  22. (*       Calls:                                                             *)
  23. (*                                                                          *)
  24. (*            BetaInv (Inverse Beta Distribution)                           *)
  25. (*                                                                          *)
  26. (*       Remarks:                                                           *)
  27. (*                                                                          *)
  28. (*            Any error results in '-1.0' as returned t value.              *)
  29. (*                                                                          *)
  30. (*--------------------------------------------------------------------------*)
  31.  
  32. CONST
  33.    MaxIter = 100;
  34.    Dprec   = 10;
  35.  
  36. VAR
  37.    tin:   REAL;
  38.    Iter:  INTEGER;
  39.    Cprec: REAL;
  40.    Ierr:  INTEGER;
  41.  
  42. BEGIN (* tinv *)
  43.  
  44.    tin   := -1.0;
  45.  
  46.    IF( Df > 0.0 ) THEN
  47.  
  48.       IF( ( Alpha >= 0.0 ) AND ( Alpha <= 1.0 ) ) THEN
  49.  
  50.          BEGIN
  51.  
  52.             tin := BetaInv( Alpha, 0.5, Df / 2.0, MaxIter, Dprec,
  53.                             Iter, Cprec, Ierr );
  54.  
  55.             IF( ( tin >= 0.0 ) AND ( tin < 1.0 ) AND ( Ierr = 0 ) ) THEN
  56.                   tin  := SQRT( tin * Df / ( 1.0 - tin ) );
  57.  
  58.          END;
  59.  
  60. END   (* tinv *);
  61.